package com.baidu.service;

import com.baidu.aip.face.AipFace;
import com.baidu.aip.imageprocess.AipImageProcess;
import com.baidu.aip.util.Base64Util;
import com.baidu.utils.AipFaceSample;
import com.baidu.utils.AipImgSample;
import org.json.JSONObject;

import java.util.HashMap;

// AipFaceService 人脸识别业务处理类
public class AipImgService {

    // 优化：免实例化对象, 单例模式
    private static AipImgService aipFaceService;
    public static AipImgService getAipFaceService(){
        if(aipFaceService == null) aipFaceService = new AipImgService();
        return aipFaceService;
    }

    public AipImageProcess aipImageProcess = AipImgSample.getAipFace();

    // 人物动漫化
    public String selfieAnime(byte[] img){

        // Map<K, V> K: 键的类型， V: 值的类型
        HashMap<String, String> options = new HashMap<>();
         //如果有可选参数
        options.put("type", "anime");
        options.put("mask_id", "3");

        String img_bs64 = Base64Util.encode(img);  // Base64 转码

        // 人脸识别
        JSONObject json = aipImageProcess.selfieAnime(img, options);
        System.out.println(json.toString());

        return  json.toString();  // 转换为字符串
    }

    // 风格转换
    public String styleTrans(byte[] img){

        // Map<K, V> K: 键的类型， V: 值的类型
        HashMap<String, String> options = new HashMap<>();
        //如果有可选参数
        options.put("option", "lavender");

        // 人脸识别
        JSONObject json = aipImageProcess.styleTrans(img, options);
        System.out.println(json.toString());

        return  json.toString();  // 转换为字符串
    }


    //黑白上色
    public String colourize(byte[] img) {

        HashMap<String, String> options = new HashMap<>();

        // 黑白上色
        JSONObject json = aipImageProcess.colourize(img, options);
        System.out.println(json.toString());

        return  json.toString();  // 转换为字符串

    }
}
